﻿#ifndef DECODER_H
#define DECODER_H

#include <mutex>
extern "C"
{
#include "libavcodec/avcodec.h"
}

class Decoder
{
public:
    Decoder();
    ~Decoder();
public:

    bool isAudio = false;
    //打开解码器,不管成功与否都释放para空间
    bool openDecoder(AVCodecParameters *para);
    //发送到解码线程，不管成功与否都释放pkt空间（对象和媒体内容）
    bool sendAVPacketToDecoder(AVPacket *pkt);
    //获取解码数据,每次复制一份，由调用者释放 av_frame_free
    AVFrame * getDecodedFrame();
private:

    AVCodecContext* codec_ctx = 0;
    std::mutex mux;

};

#endif // DECODER_H
